Nachdiplomkurs Java - Java Certification Sommer Semester, Java Security Konstrukte und Konzepte |
||
---|---|---|
© , Alle Rechte vorbehalten, Josef M. Joller |
Zielpublikum | Software-Entwickler |
Vorkenntnisse | Java Grundlagen |
Kursbeginn | Dienstag und Donnerstag |
Kursdauer | 1 Abend |
Zeiten | Jeweils Dienstag und Donnerstag,17.30 bis 21.45 Uhr |
KURSZIELE Sie kennen die grundlegenden Sicherheitskonzepte von Java 2 und können diese in der Praxis anwenden. KURSUNTERLAGEN Skript (PDF) Beispiele (ZIP) Jasmin (JVM Assembler) (ZIP) KURSINHALTE EINFÜHRUNG IN JAVA SECURITY 1 1.1.1. Übersicht 2 1.1.2. Lernziele 2 1.2. MODUL 1 - ÜBERSICHT ÜBER DIE JAVA SECURITY 3 1.2.1. Einführung 3 1.2.1.1. Lernziele 3 1.2.2. Was ist Security? 3 1.2.2.1. Referenzen 3 1.2.3. Gute Security Praktiken 4 1.2.4. Security Praxis und Java 6 1.2.5. Das Sandbox Sicherheitsmodell 7 1.2.6. Selbsttestaufgaben 10 1.2.7. Musterlösungen 11 1.2.8. Zusammenfassung - Übersicht über Java Security 12 MODUL 2 - JVM UND DER VERIFIKATIONSPROZESS 13 1.3.1. Einführung 13 1.3.2. Java Virtual Machine 14 1.3.3. Java Interpreter 15 1.3.4. Class Datei Verfier 16 1.3.5. Typensicherheit 21 1.3.6. Fehler im Verifier früherer JDKs 22 1.3.7. Typenvortäuschung 22 1.3.8. Verifier und Class Loader Attacken 23 1.3.9. Kimera Projekt 25 1.3.10. Was wurde unternommen 26 1.3.10.1. Formale Modelle 26 1.3.10.2. Java Kompatibilitätstest 26 1.3.10.3. Java Kompatibilität versus 100% Pure Java 26 1.3.10.4. Java Compatibility Kit 27 1.3.10.4.1. Java Test Harness 27 1.3.10.4.2. Kompatibilitätseinschränkungen 27 1.3.10.4.3. Test Komplexität 27 1.3.10.4.4. Testwerkzeuge 27 1.3.10.4.5. Testprozesskomplexität 28 1.3.10.4.6. Zu testende Komponenten 28 1.3.10.4.7. Compilertests 28 1.3.10.4.8. Virtual Machines 28 1.3.10.4.9. API Libraries 28 1.3.10.4.10. Erweiterungen des JCK 28 1.3.11. Indirekte Ausführung 29 1.3.12. Übungen - mit Bytecode arbeiten 30 1.3.12.1. Der Kimera Verifier und Disassembler 30 1.3.12.1.1. Schritt 1 - HelloWorld.java 30 1.3.12.1.2. Schritt 2 - Der Kimera Verifier 31 1.3.12.1.3. Kimera Bytecode Verification - Literaturauszug 31 1.3.12.1.4. Schritt 3 - Die Kimera Ausgabe 32 1.3.12.1.5. Schritt 4 - Aufruf des Java Verifiers 33 1.3.12.1.6. Schritt 5 - Der Kimera Disassembler Literaturauszug 33 1.3.12.1.7. Schritt 6 - Ausgabe des Kimera Disassemblers 34 1.3.12.1.8. Schritt 7 - Vergleich der Ausgabe von javap und des Kimera Disassemblers 35 1.3.12.2. Konstruktion einer Klasse, die im Verifier verworfen wird 36 1.3.12.2.1. Kimera Byte Code Verifiers Ausgabe 37 1.3.12.2.2. Kimera Disassembler Ausgabe 39 1.3.12.3. Jasmin - ein Java Assembler Interface 41 1.3.13. Quiz 43 1.3.14. Zusammenfassung des Moduls 44 1.4. MODULE 3 - CLASS LOADERS 45 1.4.1. Einleitung 45 1.4.1.1. Lernziele 45 1.4.1.2. Referenzen 45 1.4.2. Wann werden Klassen geladen? 46 1.4.3. Wie wird eine Klasse geladen? 47 1.4.3.1. Validieren des Klassennamens 48 1.4.3.2. Überprüfen des Cache 49 1.4.3.3. Überprüfen der Oberklasse des Class Loaders 50 1.4.3.4. Kreieren einer Referenz auf eine Datei oder ein Verzeichnis 51 1.4.3.5. Laden des Bytecodes 51 1.4.3.6. Installieren der Klasse 51 1.4.3.7. Installieren der Klassen 52 1.4.3.8. Klasse im Cache einfügen 52 1.4.3.9. Die Klasse auflösen 52 1.4.4. Class Loaders 53 1.4.4.1. Standard Class Loader 53 1.4.5. Kreieren eigener Class Loader 54 1.4.6. Laden von Ressourcen 55 1.4.7. Class Loaders in JDK 1.2 56 1.4.8. Class Loader Sicherheitsfragen 57 1.4.9. Übungen 59 1.4.9.1. Mit dem Cache arbeiten 59 1.4.9.2. Checksum Validation 64 1.5. MODUL 4 - SECURITY MANAGER 66 1.5.1. Einleitung 66 1.5.2. Security Manager - Übersicht 67 1.5.3. Security Managers und Applikationen 69 1.5.4. Die checkXXX Methoden 69 1.5.5. Methoden und Operationen 70 1.5.6. FileInputStream Beispiel 71 1.5.7. Kreieren eines eigenen Security Managers 74 1.5.8. Security Manager Methoden 74 1.5.9. Installieren eines Security Managers 77 1.5.10. Datei Zugriff 77 1.5.11. Nach der Installation 78 1.5.12. Übung - Security Manager 79 1.5.12.1. SampleClassLoader 79 1.5.12.2. SampleSecurityManager 81 1.5.12.3. Sum - Checksumme 85 1.5.12.4. Runner 86 1.6. MODUL 5 - ERWEITERUNG DES SANDBOX SECURITY MODELLS 87 1.6.1. Einleitung 87 1.6.1.1. Lernziele 87 1.6.1.2. Referenzen 87 1.6.2. Kurzwiederholung - Das Sandbox Security Modell 88 1.6.3. Die Sandbox schützt nicht 89 1.6.4. Applet Fähigkeiten 89 1.6.5. Das Java Protection Domain Sicherheitsmodell 90 1.6.6. Protection Domains 92 1.6.7. Security Policy Datei 93 1.6.8. Domains und Permissions 99 1.6.9. Quiz 101 1.6.10. Zusammenfassung - Erweiterung des Security Modells 103 1.7. MODUL 6 - JAVA JDK SECURITY KLASSEN 104 1.7.1. Einleitung 104 1.7.2. Lernziele 104 1.7.3. Referenzen 104 1.7.4. Permissions und Security Policy 105 1.7.4.1. java.security.BasicPermission 105 1.7.4.2. java.security.Policy 105 1.7.4.3. java.security.CodeSource 106 1.7.4.4. java.security.Permission 106 1.7.4.5. Die java.security.Permission.implies() Methode 107 1.7.4.5.1. Beispiel - implies() Methode für java.io.FilePermission 107 1.7.4.6. PermissionCollection 108 1.7.4.7. PermissionCollection 108 1.7.5. Access Control - Zugriffskontrolle 109 1.7.6. Exceptions 112 1.7.6.1. java.lang.SecurityException 113 1.7.6.2. java.security.GeneralSecurityException 114 1.7.7. PropertyPermission Class Analysis 115 1.7.7.1. Andere Permission Klassen 115 1.7.8. Einsatz der Permission Klassen 117 1.7.9. Neue Permission Typen 118 1.7.10. Quiz 120 1.7.11. Übung 121 1.7.12. Modul Zusammenfassung 131 1.8. ZUSAMMENFASSUNG 132